package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


/**
 * @desc BffVirtualOrgMemberDto
 * @使用场景
 */
@Data
public class BffVirtualOrgMemberDto implements Serializable {

    /**
     * 角色标识
     */
    @ApiModelProperty("角色标识")
    private String roleCode;

    /**
     * 组内职务名称
     */
    @ApiModelProperty("组内职务名称")
    private String virtualOrganizationPosition;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 个人账号ID
     */
    @ApiModelProperty("个人账号ID")
    private String userId;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;
    /**
     * 虚拟组织成员ID
     */
    @ApiModelProperty("虚拟组织成员ID")
    private String virtualOrgMemberId;

    /**
     * 职务信息展示
     */
    @ApiModelProperty("职务信息展示")
    private String positionIdName;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;
    /**
     * 是否管理员 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否管理员")
    private String isAdmin;
    /**
     * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
     */
    @ApiModelProperty("存档类型")
    private String archivngType;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 排序
     */
    @NotNull(message = "排序不能为空")
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 冗余内容表主键ID
     */
    @ApiModelProperty("冗余内容表主键ID")
    private String entityId;

    /**
     * 身份人员ID
     */
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;
    /**
     * 个人资料记录ID
     */
    @ApiModelProperty("个人资料记录ID")
    private String personalDataId;
    /**
     * 就职开始时间
     */
    @ApiModelProperty("就职开始时间")
    private Date inductionStartTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffVirtualOrgMemberDto that = (BffVirtualOrgMemberDto) o;
        return roleCode == that.roleCode && virtualOrganizationPosition == that.virtualOrganizationPosition && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && userId == that.userId && idCardName == that.idCardName && nickName == that.nickName && userFace == that.userFace && virtualOrgMemberId == that.virtualOrgMemberId && positionIdName == that.positionIdName && updateStatus == that.updateStatus && isAdmin == that.isAdmin && archivngType == that.archivngType && subjectLifeCycle == that.subjectLifeCycle && orderNumber == that.orderNumber && entityId == that.entityId && originalRoleMemberId == that.originalRoleMemberId && personalDataId == that.personalDataId && inductionStartTime == that.inductionStartTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), roleCode, virtualOrganizationPosition, virtualOrgInductionRecordId, userId, idCardName, nickName, userFace, virtualOrgMemberId, positionIdName, updateStatus, isAdmin, archivngType, subjectLifeCycle, orderNumber, entityId, originalRoleMemberId, personalDataId, inductionStartTime);
    }


}
   